﻿#include<iostream>
using namespace std;
//class Date
//{
//public:
//    // 重载 == 运算符，将函数声明为 const 成员函数
//    bool operator==(const Date& x1) const
//    {
//        return _year == x1._year
//            && _month == x1._month
//            && _day == x1._day;
//    }
//
//    // 构造函数，使用初始化列表初始化成员变量
//    Date(int year, int month, int day) : _year(year), _month(month), _day(day) {}
//
//private:
//    int _year;
//    int _month;
//    int _day;
//};

class Date
{
public:
    //构造函数
    Date(int year = 1, int month = 1, int day = 1)
    {
        _year = year;
        _month = month;
        _day = day;
    }
    //拷贝构造函数
    Date(const Date& d)
    {
        cout << " Date(const Date& d)" << endl;
        _year = d._year;
        _month = d._month;
        _day = d._day;
    }

    // 传引⽤返回减少拷⻉ 
    // d1 = d2;
    Date& operator=(const Date& d)
    {
        // 不要检查⾃⼰给⾃⼰赋值的情况 
        if (this != &d)
        {
            _year = d._year;
            _month = d._month;
            _day = d._day;
        }
        // d1 = d2表达式的返回对象应该为d1，也就是*this 
        return *this;
    }
 /*   void operator=(const Date& d)
    {
        _year = d._year;
        _month = d._month;
        _day = d._day;
    }*/
    void Print()
    {
       cout << _year << "-" << _month << "-" << _day << endl;
    }
private:
    int _year;
    int _month;
    int _day;
};

int main()
{
   /* Date d1(2024, 10, 1);
    Date d2(2024, 10, 1);
    Date d3(2025, 1, 1);

    std::cout << std::boolalpha;
    std::cout << "d1 == d2: " << (d1 == d2) << std::endl;
    std::cout << "d1 == d3: " << (d1 == d3) << std::endl;*/
    Date d1;
    Date d2(2022, 2, 2);
    Date d3;
    d1 = d2 =d3;


    return 0;
}
//bool operator==(const Date& x1, const Date& x2)
//{
//return x1._year == x2._year
//	&& x1._month == x2._month
//		&& x1._day == x2._day;
//}
